home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / wais / waisgate / HTChunk.h < prev    next >
C/C++ Source or Header  |  1995-05-09  |  3KB  |  114 lines

  1. /*  */
  2.  
  3. /*              Chunk handling: Flexible arrays
  4. **              ===============================
  5. **
  6. ** This module implements a flexible array. It is a general utility module.
  7. ** A chunk is a structure which may be extended.  These routines create
  8. ** and append data to chnuks, automatically reallocating them as necessary.
  9. **
  10. */
  11.  
  12.  
  13. typedef struct {
  14.         int     size;           /* In bytes                     */
  15.         int     growby;         /* Allocation unit in bytes     */
  16.         int     allocated;      /* Current size of *data        */
  17.         char *  data;           /* Pointer to malloced area or 0 */
  18. } HTChunk;
  19.  
  20.  
  21. #ifdef SHORT_NAMES
  22. #define HTChunkClear            HTChClea
  23. #define HTChunkPutc             HTChPutc
  24. #define HTChunkPuts             HTChPuts
  25. #define HTChunkCreate           HTChCrea
  26. #define HTChunkTerminate        HTChTerm
  27. #define HTChunkEnsure           HtChEnsu
  28. #endif
  29.  
  30.  
  31. /*      Create new chunk
  32. **
  33. ** On entry,
  34. **
  35. **      growby          The number of bytes to allocate at a time
  36. **                      when the chunk is later extended. Arbitrary but
  37. **                      normally a trade-off time vs. memory
  38. **
  39. ** On exit,
  40. **      returns         A chunk pointer to the new chunk,
  41. */
  42. extern HTChunk * HTChunkCreate PARAMS((int growby));
  43.  
  44.  
  45. /*      Free a chunk
  46. **
  47. ** On entry,
  48. **      ch      A valid chunk pointer made by HTChunkCreate()
  49. **
  50. ** On exit,
  51. **      ch      is invalid and may not be used.
  52. */
  53. extern void HTChunkFree PARAMS((HTChunk * ch));
  54.  
  55.  
  56. /*      Clear a chunk
  57. **
  58. ** On entry,
  59. **      ch      A valid chunk pointer made by HTChunkCreate()
  60. **
  61. ** On exit,
  62. **      *ch     The size of the chunk is zero.
  63. */
  64. extern void HTChunkClear PARAMS((HTChunk * ch));
  65.  
  66.  
  67. /*      Ensure a chunk has a certain space in
  68. **
  69. ** On entry,
  70. **      ch      A valid chunk pointer made by HTChunkCreate()
  71. **      s       The size required
  72. **
  73. ** On exit,
  74. **      *ch     Has size at least s
  75. */
  76. extern void HTChunkEnsure PARAMS((HTChunk * ch, int s));
  77.  
  78.  
  79. /*      Append a character to a  chunk
  80. **
  81. ** On entry,
  82. **      ch      A valid chunk pointer made by HTChunkCreate()
  83. **      c       The character to be appended
  84. ** On exit,
  85. **      *ch     Is one character bigger
  86. */
  87.  
  88. extern void HTChunkPutc PARAMS((HTChunk * ch, char c));
  89.  
  90. /*      Append a string to a  chunk
  91. **
  92. ** On entry,
  93. **      ch      A valid chunk pointer made by HTChunkCreate()
  94. **      s       Tpoints to a zero-terminated string to be appended
  95. ** On exit,
  96. **      *ch     Is bigger by strlen(s)
  97. */
  98.  
  99. extern void HTChunkPuts PARAMS((HTChunk * ch, const char *s));
  100.  
  101.  
  102. /*      Append a zero character to a  chunk
  103. **
  104. ** On entry,
  105. **      ch      A valid chunk pointer made by HTChunkCreate()
  106. ** On exit,
  107. **      *ch     Is one character bigger
  108. */
  109.  
  110. extern void HTChunkTerminate PARAMS((HTChunk * ch));
  111. /*
  112.  
  113.     */
  114.